This is the code for the alternative statistical analysis for “Vowel Acoustics as Predictors of Speech Intelligibility in Dysarthria.”

Loading Packages

This block of code loads in the required packages for this script. In the #’s, I have provided to the code to install each package if needed.


library(rio) # install.packages('rio')
library(tidyverse) # install.packages('tidyverse')
library(irr) # install.packages('irr')
library(performance) # install.packages('performance')
library(car) # install.packages('car')
library(ggpubr) # install.packages('ggpubr')
library(Hmisc) # install.packages('Hmisc')
library(ggridges) # install.packages('ggridges')
library(furniture) # install.packages('furniture')
library(gt) # install.packages('gt')
library(patchwork) # install.packages('patchwork')
library(ks) # install.packages('ks')
library(emuR) # install.packages('emuR')

Upload Datasets


# Reliability Data
Reliability <- rio::import("Prepped Data/Reliability Data.csv")

# Speaker Data
AcousticData <- rio::import("Prepped Data/AcousticMeasures.csv") %>%
  dplyr::filter(!grepl("_rel", Speaker)) %>% # Filters out reliability data
  dplyr::select(c(Speaker,
                  Sex,
                  Etiology,
                  vowel_ED_b, # Corner Dispersion
                  VSA_b, # Traditional VSA
                  Hull_b, # VSA Hull
                  Hull_bVSD_25, # VSD 25
                  Hull_bVSD_75, # VSD 75
                  VAS, # Intelligibility (VAS)
                  transAcc) # Intelligibility (OT)
                ) %>% 
  # The following code ensure etiology, sex, and speaker are coded as factors
  dplyr::mutate(Etiology = as.factor(Etiology),
                Sex = as.factor(Sex),
                Speaker = as.factor(Speaker))

# Listener Data
Listeners <- rio::import("Prepped Data/Listener_Demographics.csv") %>%
  dplyr::select(!c(StartDate:proloficID, # removes unwanted columns
                   Q2.4_6_TEXT,
                   Q3.2_8_TEXT,
                   AudioCheck:EP3)) %>% 
  # The follow code corrects for when a listener replied "Other" instead of the Biracial or Multiracial" response
  dplyr::mutate(race = case_when(
    Q3.3_7_TEXT == "Native American/ African amercing" ~ "Biracial or Multiracial",
    TRUE ~ race
  ))

Alternate Analysis

In this alternate analysis, we are looking at the relationship between these acoustic measures with speech intelligibility for the ALS/PD and the HD/Ataxic speakers separately. We create a new variable called Incoord, where the ALS/PD Speakers are set as the reference group (in order to compare to the Ataxic/HD Speaker Group). Group Comparisons, additional data visualizations, and further linear model comparisons are completed.

Data Prep

This block creates metagroups comprising of Group A (ALS & PD), and Group B (HD & Ataxia). These two


AcousticData <- AcousticData %>%
  dplyr::mutate(metaGroup = case_when(Etiology == "HD" ~ "A",
                                    Etiology == "Ataxic" ~ "A",
                                    TRUE ~ "B")) %>%
  dplyr::mutate(metaGroup = as.factor(metaGroup))

Descriptives

Group Comparisons - 4 Groups

VSA


## Specify the Model
VSA_group <- aov(VSA_b ~ Etiology, data = AcousticData)

## Assumption Check

plot(VSA_group, 1)
plot(VSA_group, 2)
car::leveneTest(VSA_group)
VSA_residuals <- residuals(object = VSA_group)
shapiro.test(VSA_residuals)

## Model Results

summary(VSA_group)

## Kruskal-Wallis Test 

kruskal.test(VSA_b ~ Etiology, data = AcousticData)

## Pairwise Comparisons

pairwise.wilcox.test(AcousticData$VSA_b, AcousticData$Etiology, p.adjust.method = "bonferroni")

Corner Dispersion


## Specify the Model
disp_group <- aov(vowel_ED_b ~ Etiology, data = AcousticData)

## Assumption Check

plot(disp_group, 1)
plot(disp_group, 2)
car::leveneTest(disp_group)
disp_residuals <- residuals(object = disp_group)
shapiro.test(disp_residuals)

## Model Results

summary(disp_group)

Hull


## Specify the Model
hull_group <- aov(Hull_b ~ Etiology, data = AcousticData)

## Assumption Check

plot(hull_group, 1)
plot(hull_group, 2)
car::leveneTest(hull_group)
hull_residuals <- residuals(object = hull_group)
shapiro.test(hull_residuals)

## Model Results

summary(hull_group)

VSD 25


## Specify the Model
vsd25_group <- aov(Hull_bVSD_25 ~ Etiology, data = AcousticData)

## Assumption Check

plot(vsd25_group, 1)
plot(vsd25_group, 2)
car::leveneTest(vsd25_group)
vsd25_residuals <- residuals(object = vsd25_group)
shapiro.test(vsd25_residuals)

## Model Summary

summary(vsd25_group)

VSD 75


## Specify the Model
vsd75_group <- aov(Hull_bVSD_75 ~ Etiology, data = AcousticData)

## Assumption Check

plot(vsd75_group, 1)
plot(vsd75_group, 2)
car::leveneTest(vsd75_group)
vsd75_residuals <- residuals(object = vsd75_group)
shapiro.test(vsd75_residuals)

## Model Summary

summary(vsd75_group)

## Kruskal Wallis

kruskal.test(Hull_bVSD_75 ~ Etiology, data = AcousticData)

Group Comparisons - 2 Groups

This is the analysis for the two metagroups, Group A and B.


groupA <- AcousticData %>%
  dplyr::filter(metaGroup == "A")

groupB <- AcousticData %>%
  dplyr::filter(metaGroup == "B")

VSA

VSA_b_t

    Two Sample t-test

data:  groupA$VSA_b and groupB$VSA_b
t = 2.8889, df = 38, p-value = 0.006352
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 0.519310 2.951478
sample estimates:
mean of x mean of y 
 5.289125  3.553732 

Corner Dispersion

disp_t

    Two Sample t-test

data:  groupA$vowel_ED_b and groupB$vowel_ED_b
t = 2.031, df = 38, p-value = 0.04929
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 0.000790061 0.485404644
sample estimates:
mean of x mean of y 
 2.165220  1.922123 

Hull

hull_t

    Two Sample t-test

data:  groupA$Hull_b and groupB$Hull_b
t = 2.4391, df = 38, p-value = 0.0195
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
  1.084279 11.670189
sample estimates:
mean of x mean of y 
 34.14243  27.76520 

VSD 25


# Assumption Check

## Checking Normality
with(AcousticData, shapiro.test(Hull_bVSD_25[metaGroup == "A"]))

    Shapiro-Wilk normality test

data:  Hull_bVSD_25[metaGroup == "A"]
W = 0.966, p-value = 0.6692
with(AcousticData, shapiro.test(Hull_bVSD_25[metaGroup == "B"]))

    Shapiro-Wilk normality test

data:  Hull_bVSD_25[metaGroup == "B"]
W = 0.93529, p-value = 0.1951
## Equal Variance Check
res.ftest.vsd25 <- var.test(Hull_bVSD_25 ~ metaGroup, data = AcousticData)
res.ftest.vsd25

    F test to compare two variances

data:  Hull_bVSD_25 by metaGroup
F = 0.80673, num df = 19, denom df = 19, p-value = 0.6444
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
 0.3193148 2.0381717
sample estimates:
ratio of variances 
         0.8067331 
# Model Results
vsd25_t <- t.test(groupA$Hull_bVSD_25, groupB$Hull_bVSD_25, var.equal = T)
vsd25_t

    Two Sample t-test

data:  groupA$Hull_bVSD_25 and groupB$Hull_bVSD_25
t = 1.4368, df = 38, p-value = 0.159
alternative hypothesis: true difference in means is not equal to 0
95 percent confidence interval:
 -1.234943  7.274708
sample estimates:
mean of x mean of y 
 17.36480  14.34491 

VSD 75

vsd75_MW

    Wilcoxon rank sum exact test

data:  Hull_bVSD_75 by metaGroup
W = 240, p-value = 0.2888
alternative hypothesis: true location shift is not equal to 0

Intelligibility (OT)


# Assumption Check

## Checking Normality
with(AcousticData, shapiro.test(transAcc[metaGroup == "A"]))

    Shapiro-Wilk normality test

data:  transAcc[metaGroup == "A"]
W = 0.91581, p-value = 0.0823
with(AcousticData, shapiro.test(transAcc[metaGroup == "B"]))

    Shapiro-Wilk normality test

data:  transAcc[metaGroup == "B"]
W = 0.87029, p-value = 0.01189
## Equal Variance Check
res.ftest.OT <- var.test(transAcc ~ metaGroup, data = AcousticData)
res.ftest.OT

    F test to compare two variances

data:  transAcc by metaGroup
F = 0.92421, num df = 19, denom df = 19, p-value = 0.8654
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
 0.3658124 2.3349640
sample estimates:
ratio of variances 
         0.9242071 
# Model Results (Mann-Whitney U test conducted since assumption of normality is violated)
OT_MW <- wilcox.test(transAcc ~ metaGroup, data = AcousticData)
OT_MW

    Wilcoxon rank sum exact test

data:  transAcc by metaGroup
W = 206, p-value = 0.8831
alternative hypothesis: true location shift is not equal to 0

Intelligibility (VAS)


# Assumption Check

## Checking Normality
with(AcousticData, shapiro.test(VAS[metaGroup == "A"]))

    Shapiro-Wilk normality test

data:  VAS[metaGroup == "A"]
W = 0.91494, p-value = 0.07923
with(AcousticData, shapiro.test(VAS[metaGroup == "B"]))

    Shapiro-Wilk normality test

data:  VAS[metaGroup == "B"]
W = 0.87506, p-value = 0.01444
## Equal Variance Check
res.ftest.VAS <- var.test(VAS ~ metaGroup, data = AcousticData)
res.ftest.VAS

    F test to compare two variances

data:  VAS by metaGroup
F = 0.93077, num df = 19, denom df = 19, p-value = 0.8774
alternative hypothesis: true ratio of variances is not equal to 1
95 percent confidence interval:
 0.3684087 2.3515361
sample estimates:
ratio of variances 
         0.9307666 
# Model Results (Mann-Whitney U test conducted since assumption of normality is violated)
OT_MW <- wilcox.test(VAS ~ metaGroup, data = AcousticData)
OT_MW

    Wilcoxon rank sum exact test

data:  VAS by metaGroup
W = 193, p-value = 0.862
alternative hypothesis: true location shift is not equal to 0

OT Analysis

Since we found significant group differences for some acoustic measures between the ALS/PD and Ataxic/HD groups, we continued the heirarichal regression approach from OT Model 5. Adding in the Incoord predictor along with the interactions between the acoustic measures did not significantly improve model fit. So our original final OT model is retained.

Model 6


## Specifying Model 6
OT_Model6 <- lm(transAcc ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + vowel_ED_b + metaGroup, data = AcousticData)

## Model 6 Assumption Check
performance::check_model(OT_Model6)


## Model 6 Summary
summary(OT_Model6)

Call:
lm(formula = transAcc ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + 
    VSA_b + vowel_ED_b + metaGroup, data = AcousticData)

Residuals:
    Min      1Q  Median      3Q     Max 
-42.105 -11.266   4.121  13.717  31.536 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)  
(Intercept)    4.7252    22.9429   0.206   0.8381  
Hull_bVSD_25  -1.6809     1.1892  -1.413   0.1669  
Hull_bVSD_75   0.9833     2.1390   0.460   0.6487  
Hull_b         1.0629     0.7946   1.338   0.1901  
VSA_b          6.5678     2.6475   2.481   0.0184 *
vowel_ED_b     4.8102    12.8358   0.375   0.7102  
metaGroupB    12.8123     7.6496   1.675   0.1034  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 21.02 on 33 degrees of freedom
Multiple R-squared:  0.346, Adjusted R-squared:  0.2271 
F-statistic:  2.91 on 6 and 33 DF,  p-value: 0.02173
## Model 5 and Model 6 Comparison
anova(OT_Model5, OT_Model6)
Analysis of Variance Table

Model 1: transAcc ~ Hull_bVSD_75 + VSA_b + vowel_ED_b
Model 2: transAcc ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + vowel_ED_b + 
    metaGroup
  Res.Df   RSS Df Sum of Sq      F Pr(>F)
1     36 16349                           
2     33 14583  3      1766 1.3321 0.2806
## Specifying Model 6
OT_Model6 <- lm(transAcc ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + vowel_ED_b + metaGroup, data = AcousticData)

Model 7


## Specifying Model 7
OT_Model7 <- lm(transAcc ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + vowel_ED_b + 
                  metaGroup + metaGroup*Hull_bVSD_25, data = AcousticData)

## Model 7 Assumption Check
performance::check_model(OT_Model7)


## Model 7 Summary
summary(OT_Model7)

Call:
lm(formula = transAcc ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + 
    VSA_b + vowel_ED_b + metaGroup + metaGroup * Hull_bVSD_25, 
    data = AcousticData)

Residuals:
    Min      1Q  Median      3Q     Max 
-41.665 -10.983   4.212  14.044  31.363 

Coefficients:
                        Estimate Std. Error t value Pr(>|t|)  
(Intercept)               2.6687    25.0611   0.106   0.9159  
Hull_bVSD_25             -1.5448     1.3541  -1.141   0.2624  
Hull_bVSD_75              0.8920     2.2093   0.404   0.6891  
Hull_b                    1.0871     0.8136   1.336   0.1909  
VSA_b                     6.5883     2.6881   2.451   0.0199 *
vowel_ED_b                4.3440    13.1935   0.329   0.7441  
metaGroupB               16.7140    19.2373   0.869   0.3914  
Hull_bVSD_25:metaGroupB  -0.2417     1.0905  -0.222   0.8260  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 21.33 on 32 degrees of freedom
Multiple R-squared:  0.347, Adjusted R-squared:  0.2042 
F-statistic: 2.429 on 7 and 32 DF,  p-value: 0.04086
## Model 6 and Model 7 Comparison
anova(OT_Model6, OT_Model7)
Analysis of Variance Table

Model 1: transAcc ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + vowel_ED_b + 
    metaGroup
Model 2: transAcc ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + vowel_ED_b + 
    metaGroup + metaGroup * Hull_bVSD_25
  Res.Df   RSS Df Sum of Sq      F Pr(>F)
1     33 14583                           
2     32 14561  1    22.358 0.0491  0.826

Model 8


## Specifying Model 8
OT_Model8 <- lm(transAcc ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + vowel_ED_b + 
                  metaGroup + metaGroup*Hull_bVSD_25 + metaGroup*Hull_bVSD_75, data = AcousticData)

## Model 8 Assumption Check
performance::check_model(OT_Model8)


## Model 8 Summary
summary(OT_Model8)

Call:
lm(formula = transAcc ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + 
    VSA_b + vowel_ED_b + metaGroup + metaGroup * Hull_bVSD_25 + 
    metaGroup * Hull_bVSD_75, data = AcousticData)

Residuals:
    Min      1Q  Median      3Q     Max 
-41.858 -12.366   6.261  13.135  30.401 

Coefficients:
                        Estimate Std. Error t value Pr(>|t|)  
(Intercept)              13.1761    26.4727   0.498   0.6222  
Hull_bVSD_25             -2.5510     1.5958  -1.599   0.1201  
Hull_bVSD_75              4.6567     3.8865   1.198   0.2399  
Hull_b                    0.9879     0.8132   1.215   0.2336  
VSA_b                     6.8700     2.6831   2.560   0.0155 *
vowel_ED_b                4.0042    13.1193   0.305   0.7622  
metaGroupB                6.3149    21.0758   0.300   0.7665  
Hull_bVSD_25:metaGroupB   1.1508     1.6068   0.716   0.4792  
Hull_bVSD_75:metaGroupB  -5.4156     4.6125  -1.174   0.2493  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 21.21 on 31 degrees of freedom
Multiple R-squared:  0.3748,    Adjusted R-squared:  0.2135 
F-statistic: 2.323 on 8 and 31 DF,  p-value: 0.04412
## Model 7 and Model 8 Comparison
anova(OT_Model7, OT_Model8)
Analysis of Variance Table

Model 1: transAcc ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + vowel_ED_b + 
    metaGroup + metaGroup * Hull_bVSD_25
Model 2: transAcc ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + vowel_ED_b + 
    metaGroup + metaGroup * Hull_bVSD_25 + metaGroup * Hull_bVSD_75
  Res.Df   RSS Df Sum of Sq      F Pr(>F)
1     32 14561                           
2     31 13941  1    619.94 1.3786 0.2493

Model 9


## Specifying Model 9
OT_Model9 <- lm(transAcc ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + vowel_ED_b + metaGroup +
                  metaGroup*Hull_bVSD_25 +
                  metaGroup*Hull_bVSD_75 +
                  metaGroup*Hull_b, data = AcousticData)

## Model 9 Assumption Check
performance::check_model(OT_Model9)


## Model 9 Summary
summary(OT_Model9)

Call:
lm(formula = transAcc ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + 
    VSA_b + vowel_ED_b + metaGroup + metaGroup * Hull_bVSD_25 + 
    metaGroup * Hull_bVSD_75 + metaGroup * Hull_b, data = AcousticData)

Residuals:
    Min      1Q  Median      3Q     Max 
-43.387 -11.747   5.389  14.794  30.552 

Coefficients:
                        Estimate Std. Error t value Pr(>|t|)  
(Intercept)              -0.1279    33.4230  -0.004   0.9970  
Hull_bVSD_25             -3.2653     1.9381  -1.685   0.1024  
Hull_bVSD_75              4.9580     3.9484   1.256   0.2189  
Hull_b                    1.6193     1.2577   1.287   0.2078  
VSA_b                     6.9293     2.7092   2.558   0.0158 *
vowel_ED_b                5.4227    13.4118   0.404   0.6888  
metaGroupB               22.3892    32.2682   0.694   0.4931  
Hull_bVSD_25:metaGroupB   2.4414     2.5348   0.963   0.3432  
Hull_bVSD_75:metaGroupB  -6.0684     4.7580  -1.275   0.2120  
Hull_b:metaGroupB        -1.1098     1.6753  -0.662   0.5128  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 21.4 on 30 degrees of freedom
Multiple R-squared:  0.3838,    Adjusted R-squared:  0.199 
F-statistic: 2.076 on 9 and 30 DF,  p-value: 0.06468
## Model 8 and Model 9 Comparison
anova(OT_Model8, OT_Model9)
Analysis of Variance Table

Model 1: transAcc ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + vowel_ED_b + 
    metaGroup + metaGroup * Hull_bVSD_25 + metaGroup * Hull_bVSD_75
Model 2: transAcc ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + vowel_ED_b + 
    metaGroup + metaGroup * Hull_bVSD_25 + metaGroup * Hull_bVSD_75 + 
    metaGroup * Hull_b
  Res.Df   RSS Df Sum of Sq      F Pr(>F)
1     31 13941                           
2     30 13740  1    200.96 0.4388 0.5128

Model 10


## Specifying Model 10
OT_Model10 <- lm(transAcc ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + vowel_ED_b +
                   metaGroup +
                   metaGroup*Hull_bVSD_25 +
                   metaGroup*Hull_bVSD_75 +
                   metaGroup*Hull_b +
                   metaGroup*VSA_b,
                 data = AcousticData)

## Model 10 Assumption Check
performance::check_model(OT_Model10)


## Model 10 Summary
summary(OT_Model10)

Call:
lm(formula = transAcc ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + 
    VSA_b + vowel_ED_b + metaGroup + metaGroup * Hull_bVSD_25 + 
    metaGroup * Hull_bVSD_75 + metaGroup * Hull_b + metaGroup * 
    VSA_b, data = AcousticData)

Residuals:
    Min      1Q  Median      3Q     Max 
-43.360 -12.039   5.446  15.103  30.988 

Coefficients:
                        Estimate Std. Error t value Pr(>|t|)  
(Intercept)               0.7791    34.9494   0.022   0.9824  
Hull_bVSD_25             -3.2153     2.0215  -1.591   0.1226  
Hull_bVSD_75              4.9024     4.0460   1.212   0.2354  
Hull_b                    1.6152     1.2795   1.262   0.2169  
VSA_b                     6.7847     3.0459   2.227   0.0338 *
vowel_ED_b                5.0854    13.9703   0.364   0.7185  
metaGroupB               21.7310    33.3409   0.652   0.5197  
Hull_bVSD_25:metaGroupB   2.3862     2.6248   0.909   0.3708  
Hull_bVSD_75:metaGroupB  -6.0316     4.8495  -1.244   0.2236  
Hull_b:metaGroupB        -1.1357     1.7194  -0.660   0.5141  
VSA_b:metaGroupB          0.5224     4.6911   0.111   0.9121  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 21.76 on 29 degrees of freedom
Multiple R-squared:  0.3841,    Adjusted R-squared:  0.1717 
F-statistic: 1.809 on 10 and 29 DF,  p-value: 0.1038
## Model 9 and Model 10 Comparison
anova(OT_Model9, OT_Model10)
Analysis of Variance Table

Model 1: transAcc ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + vowel_ED_b + 
    metaGroup + metaGroup * Hull_bVSD_25 + metaGroup * Hull_bVSD_75 + 
    metaGroup * Hull_b
Model 2: transAcc ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + vowel_ED_b + 
    metaGroup + metaGroup * Hull_bVSD_25 + metaGroup * Hull_bVSD_75 + 
    metaGroup * Hull_b + metaGroup * VSA_b
  Res.Df   RSS Df Sum of Sq      F Pr(>F)
1     30 13740                           
2     29 13734  1    5.8732 0.0124 0.9121

Model 11


## Specifying Model 11
OT_Model11 <- lm(transAcc ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + vowel_ED_b +
                   metaGroup +
                   metaGroup*Hull_bVSD_25 +
                   metaGroup*Hull_bVSD_75 +
                   metaGroup*Hull_b +
                   metaGroup*VSA_b +
                   metaGroup*vowel_ED_b,
                 data = AcousticData)

## Model 11 Assumption Check
performance::check_model(OT_Model11)


## Model 11 Summary
summary(OT_Model11)

Call:
lm(formula = transAcc ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + 
    VSA_b + vowel_ED_b + metaGroup + metaGroup * Hull_bVSD_25 + 
    metaGroup * Hull_bVSD_75 + metaGroup * Hull_b + metaGroup * 
    VSA_b + metaGroup * vowel_ED_b, data = AcousticData)

Residuals:
    Min      1Q  Median      3Q     Max 
-43.580  -9.987   5.535  12.978  34.285 

Coefficients:
                        Estimate Std. Error t value Pr(>|t|)  
(Intercept)             -22.3808    39.7206  -0.563   0.5776  
Hull_bVSD_25             -3.6045     2.0327  -1.773   0.0871 .
Hull_bVSD_75              5.4654     4.0435   1.352   0.1873  
Hull_b                    1.6498     1.2703   1.299   0.2046  
VSA_b                     5.1948     3.3022   1.573   0.1269  
vowel_ED_b               21.5790    19.5475   1.104   0.2790  
metaGroupB               65.5861    49.3675   1.329   0.1947  
Hull_bVSD_25:metaGroupB   2.4987     2.6071   0.958   0.3460  
Hull_bVSD_75:metaGroupB  -7.0129     4.8830  -1.436   0.1620  
Hull_b:metaGroupB        -0.9481     1.7139  -0.553   0.5845  
VSA_b:metaGroupB          4.9394     5.9410   0.831   0.4128  
vowel_ED_b:metaGroupB   -33.2037    27.7349  -1.197   0.2413  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 21.6 on 28 degrees of freedom
Multiple R-squared:  0.4141,    Adjusted R-squared:  0.1839 
F-statistic: 1.799 on 11 and 28 DF,  p-value: 0.1025
## Model 10 and Model 11 Comparison
anova(OT_Model10, OT_Model11)
Analysis of Variance Table

Model 1: transAcc ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + vowel_ED_b + 
    metaGroup + metaGroup * Hull_bVSD_25 + metaGroup * Hull_bVSD_75 + 
    metaGroup * Hull_b + metaGroup * VSA_b
Model 2: transAcc ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + vowel_ED_b + 
    metaGroup + metaGroup * Hull_bVSD_25 + metaGroup * Hull_bVSD_75 + 
    metaGroup * Hull_b + metaGroup * VSA_b + metaGroup * vowel_ED_b
  Res.Df   RSS Df Sum of Sq      F Pr(>F)
1     29 13734                           
2     28 13065  1    668.77 1.4332 0.2413

VAS Analysis

Since we found significant group differences for some acoustic measures between the ALS/PD and Ataxic/HD groups, we continued the hierarchical regression approach from VAS Model 5. VAS Model 6 fit significantly better than VAS Model 5. However, adding in the interactions between Incoord and the acoustic measures did not significantly improve model fit.

Model 6


## Specifying Model 6
VAS_Model6 <- lm(VAS ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + vowel_ED_b +
                   metaGroup, data = AcousticData)

## Model 6 Assumption Check
performance::check_model(VAS_Model6)


## Model 6 Summary
summary(VAS_Model6)

Call:
lm(formula = VAS ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + 
    vowel_ED_b + metaGroup, data = AcousticData)

Residuals:
    Min      1Q  Median      3Q     Max 
-41.188 -13.751   2.167  16.256  36.926 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)  
(Intercept)   -9.2778    24.8693  -0.373   0.7115  
Hull_bVSD_25  -2.1615     1.2891  -1.677   0.1030  
Hull_bVSD_75   1.7100     2.3186   0.738   0.4660  
Hull_b         1.2359     0.8613   1.435   0.1607  
VSA_b          7.4668     2.8698   2.602   0.0138 *
vowel_ED_b     5.5718    13.9135   0.400   0.6914  
metaGroupB    17.9628     8.2919   2.166   0.0376 *
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 22.79 on 33 degrees of freedom
Multiple R-squared:  0.3632,    Adjusted R-squared:  0.2474 
F-statistic: 3.137 on 6 and 33 DF,  p-value: 0.0152

Model 7


## Specifying Model 7
VAS_Model7 <- lm(VAS ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + vowel_ED_b + 
                  metaGroup + metaGroup*Hull_bVSD_25, data = AcousticData)

## Model 7 Assumption Check
performance::check_model(VAS_Model7)


## Model 7 Summary
summary(VAS_Model7)

Call:
lm(formula = VAS ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + 
    vowel_ED_b + metaGroup + metaGroup * Hull_bVSD_25, data = AcousticData)

Residuals:
    Min      1Q  Median      3Q     Max 
-42.039 -14.972   3.129  15.900  35.174 

Coefficients:
                        Estimate Std. Error t value Pr(>|t|)  
(Intercept)             -14.8027    27.0579  -0.547   0.5881  
Hull_bVSD_25             -1.7957     1.4620  -1.228   0.2283  
Hull_bVSD_75              1.4646     2.3853   0.614   0.5435  
Hull_b                    1.3009     0.8784   1.481   0.1484  
VSA_b                     7.5218     2.9023   2.592   0.0143 *
vowel_ED_b                4.3193    14.2447   0.303   0.7637  
metaGroupB               28.4451    20.7701   1.370   0.1804  
Hull_bVSD_25:metaGroupB  -0.6494     1.1773  -0.552   0.5851  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 23.03 on 32 degrees of freedom
Multiple R-squared:  0.3692,    Adjusted R-squared:  0.2312 
F-statistic: 2.675 on 7 and 32 DF,  p-value: 0.02675
## Model 6 and Model 7 Comparison
anova(VAS_Model6, VAS_Model7)
Analysis of Variance Table

Model 1: VAS ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + vowel_ED_b + 
    metaGroup
Model 2: VAS ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + vowel_ED_b + 
    metaGroup + metaGroup * Hull_bVSD_25
  Res.Df   RSS Df Sum of Sq      F Pr(>F)
1     33 17135                           
2     32 16973  1    161.37 0.3042 0.5851

Model 8


## Specifying Model 8
VAS_Model8 <- lm(VAS ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + vowel_ED_b + 
                  metaGroup + metaGroup*Hull_bVSD_25 + metaGroup*Hull_bVSD_75, data = AcousticData)

## Model 8 Assumption Check
performance::check_model(VAS_Model8)


## Model 8 Summary
summary(VAS_Model8)

Call:
lm(formula = VAS ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + 
    vowel_ED_b + metaGroup + metaGroup * Hull_bVSD_25 + metaGroup * 
    Hull_bVSD_75, data = AcousticData)

Residuals:
    Min      1Q  Median      3Q     Max 
-42.267 -15.867   1.797  15.875  35.281 

Coefficients:
                        Estimate Std. Error t value Pr(>|t|)  
(Intercept)              -7.9398    28.9821  -0.274   0.7859  
Hull_bVSD_25             -2.4529     1.7471  -1.404   0.1703  
Hull_bVSD_75              3.9235     4.2549   0.922   0.3636  
Hull_b                    1.2361     0.8903   1.388   0.1749  
VSA_b                     7.7058     2.9374   2.623   0.0134 *
vowel_ED_b                4.0973    14.3629   0.285   0.7773  
metaGroupB               21.6529    23.0737   0.938   0.3553  
Hull_bVSD_25:metaGroupB   0.2601     1.7591   0.148   0.8834  
Hull_bVSD_75:metaGroupB  -3.5372     5.0497  -0.700   0.4889  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 23.22 on 31 degrees of freedom
Multiple R-squared:  0.379, Adjusted R-squared:  0.2188 
F-statistic: 2.365 on 8 and 31 DF,  p-value: 0.04086
## Model 7 and Model 8 Comparison
anova(VAS_Model7, VAS_Model8)
Analysis of Variance Table

Model 1: VAS ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + vowel_ED_b + 
    metaGroup + metaGroup * Hull_bVSD_25
Model 2: VAS ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + vowel_ED_b + 
    metaGroup + metaGroup * Hull_bVSD_25 + metaGroup * Hull_bVSD_75
  Res.Df   RSS Df Sum of Sq      F Pr(>F)
1     32 16973                           
2     31 16709  1    264.47 0.4907 0.4889

Model 9


## Specifying Model 9
VAS_Model9 <- lm(VAS ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + vowel_ED_b +
                   metaGroup +
                   metaGroup*Hull_bVSD_25 +
                   metaGroup*Hull_bVSD_75 +
                   metaGroup*Hull_b,
                 data = AcousticData)

## Model 9 Assumption Check
performance::check_model(VAS_Model9)


## Model 9 Summary
summary(VAS_Model9)

Call:
lm(formula = VAS ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + 
    vowel_ED_b + metaGroup + metaGroup * Hull_bVSD_25 + metaGroup * 
    Hull_bVSD_75 + metaGroup * Hull_b, data = AcousticData)

Residuals:
    Min      1Q  Median      3Q     Max 
-41.224 -14.209   4.443  15.797  35.400 

Coefficients:
                        Estimate Std. Error t value Pr(>|t|)  
(Intercept)              -18.442     36.719  -0.502   0.6192  
Hull_bVSD_25              -3.017      2.129  -1.417   0.1668  
Hull_bVSD_75               4.161      4.338   0.959   0.3451  
Hull_b                     1.734      1.382   1.255   0.2191  
VSA_b                      7.753      2.976   2.605   0.0142 *
vowel_ED_b                 5.217     14.735   0.354   0.7258  
metaGroupB                34.342     35.451   0.969   0.3404  
Hull_bVSD_25:metaGroupB    1.279 VAS   0.459   0.6494  
Hull_bVSD_75:metaGroupB   -4.053      5.227  -0.775   0.4443  
Hull_b:metaGroupB         -0.876      1.841  -0.476   0.6376  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 23.51 on 30 degrees of freedom
Multiple R-squared:  0.3837,    Adjusted R-squared:  0.1988 
F-statistic: 2.075 on 9 and 30 DF,  p-value: 0.06485
## Model 8 and Model 9 Comparison
anova(VAS_Model8, VAS_Model9)
Analysis of Variance Table

Model 1: VAS ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + vowel_ED_b + 
    metaGroup + metaGroup * Hull_bVSD_25 + metaGroup * Hull_bVSD_75
Model 2: VAS ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + vowel_ED_b + 
    metaGroup + metaGroup * Hull_bVSD_25 + metaGroup * Hull_bVSD_75 + 
    metaGroup * Hull_b
  Res.Df   RSS Df Sum of Sq      F Pr(>F)
1     31 16709                           
2     30 16584  1    125.23 0.2265 0.6376

Model 10


## Specifying Model 10

VAS_Model10 <- lm(VAS ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + vowel_ED_b +
                    metaGroup +
                    metaGroup*Hull_bVSD_25 +
                    metaGroup*Hull_bVSD_75 +
                    metaGroup*Hull_b +
                    metaGroup*VSA_b,
                  data = AcousticData)

## Model 10 Assumption Check
performance::check_model(VAS_Model10)


## Model 10 Summary
summary(VAS_Model10)

Call:
lm(formula = VAS ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + 
    vowel_ED_b + metaGroup + metaGroup * Hull_bVSD_25 + metaGroup * 
    Hull_bVSD_75 + metaGroup * Hull_b + metaGroup * VSA_b, data = AcousticData)

Residuals:
    Min      1Q  Median      3Q     Max 
-41.129 -14.693   2.991  15.841  36.960 

Coefficients:
                        Estimate Std. Error t value Pr(>|t|)  
(Intercept)             -15.1947    38.3175  -0.397   0.6946  
Hull_bVSD_25             -2.8375     2.2163  -1.280   0.2106  
Hull_bVSD_75              3.9624     4.4359   0.893   0.3791  
Hull_b                    1.7199     1.4028   1.226   0.2300  
VSA_b                     7.2347     3.3394   2.166   0.0386 *
vowel_ED_b                4.0097    15.3166   0.262   0.7953  
metaGroupB               31.9854    36.5539   0.875   0.3888  
Hull_bVSD_25:metaGroupB   1.0815     2.8777   0.376   0.7098  
Hull_bVSD_75:metaGroupB  -3.9209     5.3169  -0.737   0.4668  
Hull_b:metaGroupB        -0.9688     1.8851  -0.514   0.6112  
VSA_b:metaGroupB          1.8702     5.1432   0.364   0.7188  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 23.86 on 29 degrees of freedom
Multiple R-squared:  0.3865,    Adjusted R-squared:  0.1749 
F-statistic: 1.827 on 10 and 29 DF,  p-value: 0.1001
## Model 9 and Model 10 Comparison
anova(VAS_Model9, VAS_Model10)
Analysis of Variance Table

Model 1: VAS ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + vowel_ED_b + 
    metaGroup + metaGroup * Hull_bVSD_25 + metaGroup * Hull_bVSD_75 + 
    metaGroup * Hull_b
Model 2: VAS ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + vowel_ED_b + 
    metaGroup + metaGroup * Hull_bVSD_25 + metaGroup * Hull_bVSD_75 + 
    metaGroup * Hull_b + metaGroup * VSA_b
  Res.Df   RSS Df Sum of Sq      F Pr(>F)
1     30 16584                           
2     29 16508  1    75.269 0.1322 0.7188

Model 11


## Specifying Model 11
VAS_Model11 <- lm(VAS ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + vowel_ED_b +
                    metaGroup +
                    metaGroup*Hull_bVSD_25 +
                    metaGroup*Hull_bVSD_75 +
                    metaGroup*Hull_b +
                    metaGroup*VSA_b +
                    metaGroup*vowel_ED_b,
                  data = AcousticData)

## Model 11 Assumption Check
performance::check_model(VAS_Model11)


## Model 11 Summary
summary(VAS_Model11)

Call:
lm(formula = VAS ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + 
    vowel_ED_b + metaGroup + metaGroup * Hull_bVSD_25 + metaGroup * 
    Hull_bVSD_75 + metaGroup * Hull_b + metaGroup * VSA_b + metaGroup * 
    vowel_ED_b, data = AcousticData)

Residuals:
    Min      1Q  Median      3Q     Max 
-40.891 -10.110   1.062  12.791  41.858 

Coefficients:
                        Estimate Std. Error t value Pr(>|t|)  
(Intercept)             -49.6015    42.6063  -1.164   0.2542  
Hull_bVSD_25             -3.4158     2.1804  -1.567   0.1284  
Hull_bVSD_75              4.7987     4.3373   1.106   0.2780  
Hull_b                    1.7713     1.3626   1.300   0.2042  
VSA_b                     4.8728     3.5421   1.376   0.1798  
vowel_ED_b               28.5129    20.9676   1.360   0.1847  
metaGroupB               97.1376    52.9541   1.834   0.0772 .
Hull_bVSD_25:metaGroupB   1.2486     2.7965   0.447   0.6587  
Hull_bVSD_75:metaGroupB  -5.3787     5.2378  -1.027   0.3133  
Hull_b:metaGroupB        -0.6902     1.8384  -0.375   0.7102  
VSA_b:metaGroupB          8.4322     6.3726   1.323   0.1965  
vowel_ED_b:metaGroupB   -49.3281    29.7498  -1.658   0.1085  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 23.17 on 28 degrees of freedom
Multiple R-squared:  0.4413,    Adjusted R-squared:  0.2218 
F-statistic: 2.011 on 11 and 28 DF,  p-value: 0.06657
## Model 10 and Model 11 Comparison
anova(VAS_Model10, VAS_Model11)
Analysis of Variance Table

Model 1: VAS ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + vowel_ED_b + 
    metaGroup + metaGroup * Hull_bVSD_25 + metaGroup * Hull_bVSD_75 + 
    metaGroup * Hull_b + metaGroup * VSA_b
Model 2: VAS ~ Hull_bVSD_25 + Hull_bVSD_75 + Hull_b + VSA_b + vowel_ED_b + 
    metaGroup + metaGroup * Hull_bVSD_25 + metaGroup * Hull_bVSD_75 + 
    metaGroup * Hull_b + metaGroup * VSA_b + metaGroup * vowel_ED_b
  Res.Df   RSS Df Sum of Sq      F Pr(>F)
1     29 16508                           
2     28 15032  1      1476 2.7493 0.1085

New Final VAS Model

Since VAS Model 6 was significantly better fit than Model 5, we fit a new final parsimonious model for VAS to the data (VAS ~ VSA_b + metaGroup) and compared that to the old final VAS model (VAS ~ VSA_b). The new final model was not a significantly better fit than the old final model. Thus the old final model (VAS ~ VSA_b) is retained.

## Comparison to Old Final Model
anova(VAS_Model_final, VAS_Model_newfinal)
Analysis of Variance Table

Model 1: VAS ~ VSA_b
Model 2: VAS ~ VSA_b + metaGroup
  Res.Df   RSS Df Sum of Sq      F  Pr(>F)  
1     38 20556                              
2     37 18802  1    1753.6 3.4509 0.07119 .
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Testing Individual Predictors

Because some correlations between predictors are high. We run a series of simple linear regressions to test if the predictors significantly predict each intelligibility measure on their own (VSD 25 and VSA models were already complete in our initial model comparison approach)

Orthographic Transcription Models


# OT ~ VSD 75
OT_vsd75_model <- lm(transAcc ~ Hull_bVSD_75, data = AcousticData)
performance::check_model(OT_vsd75_model)

summary(OT_vsd75_model)

Call:
lm(formula = transAcc ~ Hull_bVSD_75, data = AcousticData)

Residuals:
   Min     1Q Median     3Q    Max 
-47.60 -16.32   6.10  16.13  31.96 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept)   56.4278     5.4314  10.389 1.17e-12 ***
Hull_bVSD_75   0.9052     1.7124   0.529      0.6    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 24.14 on 38 degrees of freedom
Multiple R-squared:  0.0073,    Adjusted R-squared:  -0.01882 
F-statistic: 0.2794 on 1 and 38 DF,  p-value: 0.6001
# OT ~ Hull
OT_hull_model <- lm(transAcc ~ Hull_b, data = AcousticData)
performance::check_model(OT_hull_model)

summary(OT_hull_model)

Call:
lm(formula = transAcc ~ Hull_b, data = AcousticData)

Residuals:
    Min      1Q  Median      3Q     Max 
-53.141 -12.306   4.848  18.324  31.854 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)  
(Intercept)  34.0817    13.5989   2.506   0.0166 *
Hull_b        0.7879     0.4231   1.862   0.0703 .
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 23.19 on 38 degrees of freedom
Multiple R-squared:  0.08365,   Adjusted R-squared:  0.05953 
F-statistic: 3.469 on 1 and 38 DF,  p-value: 0.07029
# OT ~ Corner Dispersion
OT_disp_model <- lm(transAcc ~ vowel_ED_b, data = AcousticData)
performance::check_model(OT_disp_model)

summary(OT_disp_model)

Call:
lm(formula = transAcc ~ vowel_ED_b, data = AcousticData)

Residuals:
    Min      1Q  Median      3Q     Max 
-53.949 -10.348   4.268  14.982  25.903 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)   
(Intercept)    6.227     18.611   0.335  0.73977   
vowel_ED_b    25.564      8.946   2.857  0.00689 **
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 21.98 on 38 degrees of freedom
Multiple R-squared:  0.1769,    Adjusted R-squared:  0.1552 
F-statistic: 8.165 on 1 and 38 DF,  p-value: 0.006891

VAS Models


# VAS ~ VSD 75
VAS_vsd75_model <- lm(VAS ~ Hull_bVSD_75, data = AcousticData)
performance::check_model(VAS_vsd75_model)

summary(VAS_vsd75_model)

Call:
lm(formula = VAS ~ Hull_bVSD_75, data = AcousticData)

Residuals:
    Min      1Q  Median      3Q     Max 
-47.036 -18.277   9.543  21.192  37.312 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept)    49.543      5.963   8.308 4.51e-10 ***
Hull_bVSD_75    1.067      1.880   0.567    0.574    
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 26.5 on 38 degrees of freedom
Multiple R-squared:  0.0084,    Adjusted R-squared:  -0.01769 
F-statistic: 0.3219 on 1 and 38 DF,  p-value: 0.5738
# VAS ~ Hull
VAS_hull_model <- lm(VAS ~ Hull_b, data = AcousticData)
performance::check_model(VAS_hull_model)

summary(VAS_hull_model)

Call:
lm(formula = VAS ~ Hull_b, data = AcousticData)

Residuals:
   Min     1Q Median     3Q    Max 
-52.65 -19.68   7.88  21.88  33.56 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)  
(Intercept)  28.3768    15.0913   1.880   0.0677 .
Hull_b        0.7616     0.4695   1.622   0.1130  
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 25.73 on 38 degrees of freedom
Multiple R-squared:  0.06476,   Adjusted R-squared:  0.04015 
F-statistic: 2.631 on 1 and 38 DF,  p-value: 0.113
# VAS ~ Corner Dispersion
VAS_disp_model <- lm(VAS ~ vowel_ED_b, data = AcousticData)
performance::check_model(VAS_disp_model)

summary(VAS_disp_model)

Call:
lm(formula = VAS ~ vowel_ED_b, data = AcousticData)

Residuals:
    Min      1Q  Median      3Q     Max 
-52.146 -13.413   7.142  18.719  32.964 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)  
(Intercept)   -2.859     20.636  -0.139   0.8905  
vowel_ED_b    26.819      9.920   2.704   0.0102 *
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 24.37 on 38 degrees of freedom
Multiple R-squared:  0.1613,    Adjusted R-squared:  0.1393 
F-statistic:  7.31 on 1 and 38 DF,  p-value: 0.0102
LS0tCnRpdGxlOiAiVm93ZWwgQWNvdXN0aWNzIGFzIFByZWRpY3RvcnMgb2YgU3BlZWNoIEludGVsbGlnaWJpbGl0eSBpbiBEeXNhcnRocmlhOiBBbHRlcm5hdGUgQW5hbHlzaXMiCm91dHB1dDogaHRtbF9ub3RlYm9vawotLS0KClRoaXMgaXMgdGhlIGNvZGUgZm9yIHRoZSBhbHRlcm5hdGl2ZSBzdGF0aXN0aWNhbCBhbmFseXNpcyBmb3IgIlZvd2VsIEFjb3VzdGljcyBhcyBQcmVkaWN0b3JzIG9mIFNwZWVjaCBJbnRlbGxpZ2liaWxpdHkgaW4gRHlzYXJ0aHJpYS4iCgojIExvYWRpbmcgUGFja2FnZXMKVGhpcyBibG9jayBvZiBjb2RlIGxvYWRzIGluIHRoZSByZXF1aXJlZCBwYWNrYWdlcyBmb3IgdGhpcyBzY3JpcHQuIEluIHRoZSAjJ3MsIEkgaGF2ZSBwcm92aWRlZCB0byB0aGUgY29kZSB0byBpbnN0YWxsIGVhY2ggcGFja2FnZSBpZiBuZWVkZWQuCmBgYHtyfQoKbGlicmFyeShyaW8pICMgaW5zdGFsbC5wYWNrYWdlcygncmlvJykKbGlicmFyeSh0aWR5dmVyc2UpICMgaW5zdGFsbC5wYWNrYWdlcygndGlkeXZlcnNlJykKbGlicmFyeShpcnIpICMgaW5zdGFsbC5wYWNrYWdlcygnaXJyJykKbGlicmFyeShwZXJmb3JtYW5jZSkgIyBpbnN0YWxsLnBhY2thZ2VzKCdwZXJmb3JtYW5jZScpCmxpYnJhcnkoY2FyKSAjIGluc3RhbGwucGFja2FnZXMoJ2NhcicpCmxpYnJhcnkoZ2dwdWJyKSAjIGluc3RhbGwucGFja2FnZXMoJ2dncHVicicpCmxpYnJhcnkoSG1pc2MpICMgaW5zdGFsbC5wYWNrYWdlcygnSG1pc2MnKQpsaWJyYXJ5KGdncmlkZ2VzKSAjIGluc3RhbGwucGFja2FnZXMoJ2dncmlkZ2VzJykKbGlicmFyeShmdXJuaXR1cmUpICMgaW5zdGFsbC5wYWNrYWdlcygnZnVybml0dXJlJykKbGlicmFyeShndCkgIyBpbnN0YWxsLnBhY2thZ2VzKCdndCcpCmxpYnJhcnkocGF0Y2h3b3JrKSAjIGluc3RhbGwucGFja2FnZXMoJ3BhdGNod29yaycpCmxpYnJhcnkoa3MpICMgaW5zdGFsbC5wYWNrYWdlcygna3MnKQpsaWJyYXJ5KGVtdVIpICMgaW5zdGFsbC5wYWNrYWdlcygnZW11UicpCgpgYGAKCiMgVXBsb2FkIERhdGFzZXRzCmBgYHtyfQoKIyBSZWxpYWJpbGl0eSBEYXRhClJlbGlhYmlsaXR5IDwtIHJpbzo6aW1wb3J0KCJQcmVwcGVkIERhdGEvUmVsaWFiaWxpdHkgRGF0YS5jc3YiKQoKIyBTcGVha2VyIERhdGEKQWNvdXN0aWNEYXRhIDwtIHJpbzo6aW1wb3J0KCJQcmVwcGVkIERhdGEvQWNvdXN0aWNNZWFzdXJlcy5jc3YiKSAlPiUKICBkcGx5cjo6ZmlsdGVyKCFncmVwbCgiX3JlbCIsIFNwZWFrZXIpKSAlPiUgIyBGaWx0ZXJzIG91dCByZWxpYWJpbGl0eSBkYXRhCiAgZHBseXI6OnNlbGVjdChjKFNwZWFrZXIsCiAgICAgICAgICAgICAgICAgIFNleCwKICAgICAgICAgICAgICAgICAgRXRpb2xvZ3ksCiAgICAgICAgICAgICAgICAgIHZvd2VsX0VEX2IsICMgQ29ybmVyIERpc3BlcnNpb24KICAgICAgICAgICAgICAgICAgVlNBX2IsICMgVHJhZGl0aW9uYWwgVlNBCiAgICAgICAgICAgICAgICAgIEh1bGxfYiwgIyBWU0EgSHVsbAogICAgICAgICAgICAgICAgICBIdWxsX2JWU0RfMjUsICMgVlNEIDI1CiAgICAgICAgICAgICAgICAgIEh1bGxfYlZTRF83NSwgIyBWU0QgNzUKICAgICAgICAgICAgICAgICAgVkFTLCAjIEludGVsbGlnaWJpbGl0eSAoVkFTKQogICAgICAgICAgICAgICAgICB0cmFuc0FjYykgIyBJbnRlbGxpZ2liaWxpdHkgKE9UKQogICAgICAgICAgICAgICAgKSAlPiUgCiAgIyBUaGUgZm9sbG93aW5nIGNvZGUgZW5zdXJlIGV0aW9sb2d5LCBzZXgsIGFuZCBzcGVha2VyIGFyZSBjb2RlZCBhcyBmYWN0b3JzCiAgZHBseXI6Om11dGF0ZShFdGlvbG9neSA9IGFzLmZhY3RvcihFdGlvbG9neSksCiAgICAgICAgICAgICAgICBTZXggPSBhcy5mYWN0b3IoU2V4KSwKICAgICAgICAgICAgICAgIFNwZWFrZXIgPSBhcy5mYWN0b3IoU3BlYWtlcikpCgojIExpc3RlbmVyIERhdGEKTGlzdGVuZXJzIDwtIHJpbzo6aW1wb3J0KCJQcmVwcGVkIERhdGEvTGlzdGVuZXJfRGVtb2dyYXBoaWNzLmNzdiIpICU+JQogIGRwbHlyOjpzZWxlY3QoIWMoU3RhcnREYXRlOnByb2xvZmljSUQsICMgcmVtb3ZlcyB1bndhbnRlZCBjb2x1bW5zCiAgICAgICAgICAgICAgICAgICBRMi40XzZfVEVYVCwKICAgICAgICAgICAgICAgICAgIFEzLjJfOF9URVhULAogICAgICAgICAgICAgICAgICAgQXVkaW9DaGVjazpFUDMpKSAlPiUgCiAgIyBUaGUgZm9sbG93IGNvZGUgY29ycmVjdHMgZm9yIHdoZW4gYSBsaXN0ZW5lciByZXBsaWVkICJPdGhlciIgaW5zdGVhZCBvZiB0aGUgQmlyYWNpYWwgb3IgTXVsdGlyYWNpYWwiIHJlc3BvbnNlCiAgZHBseXI6Om11dGF0ZShyYWNlID0gY2FzZV93aGVuKAogICAgUTMuM183X1RFWFQgPT0gIk5hdGl2ZSBBbWVyaWNhbi8gQWZyaWNhbiBhbWVyY2luZyIgfiAiQmlyYWNpYWwgb3IgTXVsdGlyYWNpYWwiLAogICAgVFJVRSB+IHJhY2UKICApKQpgYGAKCiMgQWx0ZXJuYXRlIEFuYWx5c2lzCgpJbiB0aGlzIGFsdGVybmF0ZSBhbmFseXNpcywgd2UgYXJlIGxvb2tpbmcgYXQgdGhlIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHRoZXNlIGFjb3VzdGljIG1lYXN1cmVzIHdpdGggc3BlZWNoIGludGVsbGlnaWJpbGl0eSBmb3IgdGhlIEFMUy9QRCBhbmQgdGhlIEhEL0F0YXhpYyBzcGVha2VycyBzZXBhcmF0ZWx5LiBXZSBjcmVhdGUgYSBuZXcgdmFyaWFibGUgY2FsbGVkIEluY29vcmQsIHdoZXJlIHRoZSBBTFMvUEQgU3BlYWtlcnMgYXJlIHNldCBhcyB0aGUgcmVmZXJlbmNlIGdyb3VwIChpbiBvcmRlciB0byBjb21wYXJlIHRvIHRoZSBBdGF4aWMvSEQgU3BlYWtlciBHcm91cCkuIEdyb3VwIENvbXBhcmlzb25zLCBhZGRpdGlvbmFsIGRhdGEgdmlzdWFsaXphdGlvbnMsIGFuZCBmdXJ0aGVyIGxpbmVhciBtb2RlbCBjb21wYXJpc29ucyBhcmUgY29tcGxldGVkLgoKIyMgRGF0YSBQcmVwClRoaXMgYmxvY2sgY3JlYXRlcyBtZXRhZ3JvdXBzIGNvbXByaXNpbmcgb2YgR3JvdXAgQSAoQUxTICYgUEQpLCBhbmQgR3JvdXAgQiAoSEQgJiBBdGF4aWEpLiBUaGVzZSB0d28gCmBgYHtyfQoKQWNvdXN0aWNEYXRhIDwtIEFjb3VzdGljRGF0YSAlPiUKICBkcGx5cjo6bXV0YXRlKG1ldGFHcm91cCA9IGNhc2Vfd2hlbihFdGlvbG9neSA9PSAiSEQiIH4gIkEiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFdGlvbG9neSA9PSAiQXRheGljIiB+ICJBIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVFJVRSB+ICJCIikpICU+JQogIGRwbHlyOjptdXRhdGUobWV0YUdyb3VwID0gYXMuZmFjdG9yKG1ldGFHcm91cCkpCgpgYGAKCiMjIERlc2NyaXB0aXZlcyAKCmBgYHtyfQoKQWNvdXN0aWNEYXRhICU+JQogIGRwbHlyOjpncm91cF9ieShtZXRhR3JvdXApICU+JQogIGRwbHlyOjpzdW1tYXJpemUoVlNBX21lYW4gPSBtZWFuKFZTQV9iLCBuYS5ybSA9VCksIFZTQV9zZCA9IHNkKFZTQV9iLCBuYS5ybSA9IFQpLAogICAgICAgICAgICAgICAgICAgRGlzcF9tZWFuID0gbWVhbih2b3dlbF9FRF9iLCBuYS5ybSA9VCksIERpc3Bfc2QgPSBzZCh2b3dlbF9FRF9iLCBuYS5ybSA9VCksCiAgICAgICAgICAgICAgICAgICBIdWxsX21lYW4gPSBtZWFuKEh1bGxfYiwgbmEucm0gPVQpLCBIdWxsX3NkID0gc2QoSHVsbF9iLCBuYS5ybSA9VCksCiAgICAgICAgICAgICAgICAgICBWU0QyNV9tZWFuID0gbWVhbihIdWxsX2JWU0RfMjUsIG5hLnJtID1UKSwgVlNEMjVfc2QgPSBzZChIdWxsX2JWU0RfMjUsIG5hLnJtID1UKSwKICAgICAgICAgICAgICAgICAgIFZTRDc1X21lYW4gPSBtZWFuKEh1bGxfYlZTRF83NSwgbmEucm0gPVQpLCBWU0Q3NV9zZCA9IHNkKEh1bGxfYlZTRF83NSwgbmEucm0gPVQpLAogICAgICAgICAgICAgICAgICAgVkFTX21lYW4gPSBtZWFuKFZBUywgbmEucm0gPVQpLCBWQVNfc2QgPSBzZChWQVMsIG5hLnJtID1UKSwKICAgICAgICAgICAgICAgICAgIE9UX21lYW4gPSBtZWFuKHRyYW5zQWNjLCBuYS5ybSA9VCksIE9UX3NkID0gc2QodHJhbnNBY2MsIG5hLnJtID1UKSkKCmBgYAoKIyMgR3JvdXAgQ29tcGFyaXNvbnMgLSA0IEdyb3VwcwojIyMgVlNBCmBgYHtyfQoKIyMgU3BlY2lmeSB0aGUgTW9kZWwKVlNBX2dyb3VwIDwtIGFvdihWU0FfYiB+IEV0aW9sb2d5LCBkYXRhID0gQWNvdXN0aWNEYXRhKQoKIyMgQXNzdW1wdGlvbiBDaGVjawoKcGxvdChWU0FfZ3JvdXAsIDEpCnBsb3QoVlNBX2dyb3VwLCAyKQpjYXI6OmxldmVuZVRlc3QoVlNBX2dyb3VwKQpWU0FfcmVzaWR1YWxzIDwtIHJlc2lkdWFscyhvYmplY3QgPSBWU0FfZ3JvdXApCnNoYXBpcm8udGVzdChWU0FfcmVzaWR1YWxzKQoKIyMgTW9kZWwgUmVzdWx0cwoKc3VtbWFyeShWU0FfZ3JvdXApCgojIyBLcnVza2FsLVdhbGxpcyBUZXN0IAoKa3J1c2thbC50ZXN0KFZTQV9iIH4gRXRpb2xvZ3ksIGRhdGEgPSBBY291c3RpY0RhdGEpCgojIyBQYWlyd2lzZSBDb21wYXJpc29ucwoKcGFpcndpc2Uud2lsY294LnRlc3QoQWNvdXN0aWNEYXRhJFZTQV9iLCBBY291c3RpY0RhdGEkRXRpb2xvZ3ksIHAuYWRqdXN0Lm1ldGhvZCA9ICJib25mZXJyb25pIikKCmBgYAoKIyMjIENvcm5lciBEaXNwZXJzaW9uCmBgYHtyfQoKIyMgU3BlY2lmeSB0aGUgTW9kZWwKZGlzcF9ncm91cCA8LSBhb3Yodm93ZWxfRURfYiB+IEV0aW9sb2d5LCBkYXRhID0gQWNvdXN0aWNEYXRhKQoKIyMgQXNzdW1wdGlvbiBDaGVjawoKcGxvdChkaXNwX2dyb3VwLCAxKQpwbG90KGRpc3BfZ3JvdXAsIDIpCmNhcjo6bGV2ZW5lVGVzdChkaXNwX2dyb3VwKQpkaXNwX3Jlc2lkdWFscyA8LSByZXNpZHVhbHMob2JqZWN0ID0gZGlzcF9ncm91cCkKc2hhcGlyby50ZXN0KGRpc3BfcmVzaWR1YWxzKQoKIyMgTW9kZWwgUmVzdWx0cwoKc3VtbWFyeShkaXNwX2dyb3VwKQoKYGBgCgojIyMgSHVsbApgYGB7cn0KCiMjIFNwZWNpZnkgdGhlIE1vZGVsCmh1bGxfZ3JvdXAgPC0gYW92KEh1bGxfYiB+IEV0aW9sb2d5LCBkYXRhID0gQWNvdXN0aWNEYXRhKQoKIyMgQXNzdW1wdGlvbiBDaGVjawoKcGxvdChodWxsX2dyb3VwLCAxKQpwbG90KGh1bGxfZ3JvdXAsIDIpCmNhcjo6bGV2ZW5lVGVzdChodWxsX2dyb3VwKQpodWxsX3Jlc2lkdWFscyA8LSByZXNpZHVhbHMob2JqZWN0ID0gaHVsbF9ncm91cCkKc2hhcGlyby50ZXN0KGh1bGxfcmVzaWR1YWxzKQoKIyMgTW9kZWwgUmVzdWx0cwoKc3VtbWFyeShodWxsX2dyb3VwKQoKYGBgCgojIyMgVlNEIDI1CmBgYHtyfQoKIyMgU3BlY2lmeSB0aGUgTW9kZWwKdnNkMjVfZ3JvdXAgPC0gYW92KEh1bGxfYlZTRF8yNSB+IEV0aW9sb2d5LCBkYXRhID0gQWNvdXN0aWNEYXRhKQoKIyMgQXNzdW1wdGlvbiBDaGVjawoKcGxvdCh2c2QyNV9ncm91cCwgMSkKcGxvdCh2c2QyNV9ncm91cCwgMikKY2FyOjpsZXZlbmVUZXN0KHZzZDI1X2dyb3VwKQp2c2QyNV9yZXNpZHVhbHMgPC0gcmVzaWR1YWxzKG9iamVjdCA9IHZzZDI1X2dyb3VwKQpzaGFwaXJvLnRlc3QodnNkMjVfcmVzaWR1YWxzKQoKIyMgTW9kZWwgU3VtbWFyeQoKc3VtbWFyeSh2c2QyNV9ncm91cCkKCgpgYGAKCiMjIyBWU0QgNzUKYGBge3J9CgojIyBTcGVjaWZ5IHRoZSBNb2RlbAp2c2Q3NV9ncm91cCA8LSBhb3YoSHVsbF9iVlNEXzc1IH4gRXRpb2xvZ3ksIGRhdGEgPSBBY291c3RpY0RhdGEpCgojIyBBc3N1bXB0aW9uIENoZWNrCgpwbG90KHZzZDc1X2dyb3VwLCAxKQpwbG90KHZzZDc1X2dyb3VwLCAyKQpjYXI6OmxldmVuZVRlc3QodnNkNzVfZ3JvdXApCnZzZDc1X3Jlc2lkdWFscyA8LSByZXNpZHVhbHMob2JqZWN0ID0gdnNkNzVfZ3JvdXApCnNoYXBpcm8udGVzdCh2c2Q3NV9yZXNpZHVhbHMpCgojIyBNb2RlbCBTdW1tYXJ5CgpzdW1tYXJ5KHZzZDc1X2dyb3VwKQoKIyMgS3J1c2thbCBXYWxsaXMKCmtydXNrYWwudGVzdChIdWxsX2JWU0RfNzUgfiBFdGlvbG9neSwgZGF0YSA9IEFjb3VzdGljRGF0YSkKCmBgYAoKIyMgR3JvdXAgQ29tcGFyaXNvbnMgLSAyIEdyb3VwcwpUaGlzIGlzIHRoZSBhbmFseXNpcyBmb3IgdGhlIHR3byBtZXRhZ3JvdXBzLCBHcm91cCBBIGFuZCBCLgpgYGB7cn0KCmdyb3VwQSA8LSBBY291c3RpY0RhdGEgJT4lCiAgZHBseXI6OmZpbHRlcihtZXRhR3JvdXAgPT0gIkEiKQoKZ3JvdXBCIDwtIEFjb3VzdGljRGF0YSAlPiUKICBkcGx5cjo6ZmlsdGVyKG1ldGFHcm91cCA9PSAiQiIpCgpgYGAKCgojIyMgVlNBCmBgYHtyfQoKIyBBc3N1bXB0aW9uIENoZWNrCgojIyBDaGVja2luZyBOb3JtYWxpdHkKd2l0aChBY291c3RpY0RhdGEsIHNoYXBpcm8udGVzdChWU0FfYlttZXRhR3JvdXAgPT0gIkEiXSkpCndpdGgoQWNvdXN0aWNEYXRhLCBzaGFwaXJvLnRlc3QoVlNBX2JbbWV0YUdyb3VwID09ICJCIl0pKQoKIyMgRXF1YWwgVmFyaWFuY2UgQ2hlY2sKcmVzLmZ0ZXN0LlZTQSA8LSB2YXIudGVzdChWU0FfYiB+IG1ldGFHcm91cCwgZGF0YSA9IEFjb3VzdGljRGF0YSkKcmVzLmZ0ZXN0LlZTQQoKIyBNb2RlbCBSZXN1bHRzClZTQV9iX3QgPC0gdC50ZXN0KGdyb3VwQSRWU0FfYiwgZ3JvdXBCJFZTQV9iLCB2YXIuZXF1YWwgPSBUKQpWU0FfYl90CgpgYGAKCiMjIyBDb3JuZXIgRGlzcGVyc2lvbgpgYGB7cn0KCiMgQXNzdW1wdGlvbiBDaGVjawoKIyMgQ2hlY2tpbmcgTm9ybWFsaXR5CndpdGgoQWNvdXN0aWNEYXRhLCBzaGFwaXJvLnRlc3Qodm93ZWxfRURfYlttZXRhR3JvdXAgPT0gIkEiXSkpCndpdGgoQWNvdXN0aWNEYXRhLCBzaGFwaXJvLnRlc3Qodm93ZWxfRURfYlttZXRhR3JvdXAgPT0gIkIiXSkpCgojIyBFcXVhbCBWYXJpYW5jZSBDaGVjawpyZXMuZnRlc3QuZGlzcCA8LSB2YXIudGVzdCh2b3dlbF9FRF9iIH4gbWV0YUdyb3VwLCBkYXRhID0gQWNvdXN0aWNEYXRhKQpyZXMuZnRlc3QuZGlzcAoKIyBNb2RlbCBSZXN1bHRzCmRpc3BfdCA8LSB0LnRlc3QoZ3JvdXBBJHZvd2VsX0VEX2IsIGdyb3VwQiR2b3dlbF9FRF9iLCB2YXIuZXF1YWwgPSBUKQpkaXNwX3QKCmBgYAoKIyMjIEh1bGwKYGBge3J9CgojIEFzc3VtcHRpb24gQ2hlY2sKCiMjIENoZWNraW5nIE5vcm1hbGl0eQp3aXRoKEFjb3VzdGljRGF0YSwgc2hhcGlyby50ZXN0KEh1bGxfYlttZXRhR3JvdXAgPT0gIkEiXSkpCndpdGgoQWNvdXN0aWNEYXRhLCBzaGFwaXJvLnRlc3QoSHVsbF9iW21ldGFHcm91cCA9PSAiQiJdKSkKCiMjIEVxdWFsIFZhcmlhbmNlIENoZWNrCnJlcy5mdGVzdC5odWxsIDwtIHZhci50ZXN0KEh1bGxfYiB+IG1ldGFHcm91cCwgZGF0YSA9IEFjb3VzdGljRGF0YSkKcmVzLmZ0ZXN0Lmh1bGwKCiMgTW9kZWwgUmVzdWx0cwpodWxsX3QgPC0gdC50ZXN0KGdyb3VwQSRIdWxsX2IsIGdyb3VwQiRIdWxsX2IsIHZhci5lcXVhbCA9IFQpCmh1bGxfdAoKYGBgCgojIyMgVlNEIDI1CmBgYHtyfQoKIyBBc3N1bXB0aW9uIENoZWNrCgojIyBDaGVja2luZyBOb3JtYWxpdHkKd2l0aChBY291c3RpY0RhdGEsIHNoYXBpcm8udGVzdChIdWxsX2JWU0RfMjVbbWV0YUdyb3VwID09ICJBIl0pKQp3aXRoKEFjb3VzdGljRGF0YSwgc2hhcGlyby50ZXN0KEh1bGxfYlZTRF8yNVttZXRhR3JvdXAgPT0gIkIiXSkpCgojIyBFcXVhbCBWYXJpYW5jZSBDaGVjawpyZXMuZnRlc3QudnNkMjUgPC0gdmFyLnRlc3QoSHVsbF9iVlNEXzI1IH4gbWV0YUdyb3VwLCBkYXRhID0gQWNvdXN0aWNEYXRhKQpyZXMuZnRlc3QudnNkMjUKCiMgTW9kZWwgUmVzdWx0cwp2c2QyNV90IDwtIHQudGVzdChncm91cEEkSHVsbF9iVlNEXzI1LCBncm91cEIkSHVsbF9iVlNEXzI1LCB2YXIuZXF1YWwgPSBUKQp2c2QyNV90CgpgYGAKCiMjIyBWU0QgNzUKYGBge3J9CgojIEFzc3VtcHRpb24gQ2hlY2sKCiMjIENoZWNraW5nIE5vcm1hbGl0eQp3aXRoKEFjb3VzdGljRGF0YSwgc2hhcGlyby50ZXN0KEh1bGxfYlZTRF83NVttZXRhR3JvdXAgPT0gIkEiXSkpCndpdGgoQWNvdXN0aWNEYXRhLCBzaGFwaXJvLnRlc3QoSHVsbF9iVlNEXzc1W21ldGFHcm91cCA9PSAiQiJdKSkKCiMjIEVxdWFsIFZhcmlhbmNlIENoZWNrCnJlcy5mdGVzdC52c2Q3NSA8LSB2YXIudGVzdChIdWxsX2JWU0RfNzUgfiBtZXRhR3JvdXAsIGRhdGEgPSBBY291c3RpY0RhdGEpCnJlcy5mdGVzdC52c2Q3NQoKIyBNb2RlbCBSZXN1bHRzIChNYW5uLVdoaXRuZXkgVSB0ZXN0IGNvbmR1Y3RlZCBzaW5jZSBhc3N1bXB0aW9uIG9mIG5vcm1hbGl0eSBpcyB2aW9sYXRlZCkKdnNkNzVfTVcgPC0gd2lsY294LnRlc3QoSHVsbF9iVlNEXzc1IH4gbWV0YUdyb3VwLCBkYXRhID0gQWNvdXN0aWNEYXRhKQp2c2Q3NV9NVwoKYGBgCgojIyMgSW50ZWxsaWdpYmlsaXR5IChPVCkKYGBge3J9CgojIEFzc3VtcHRpb24gQ2hlY2sKCiMjIENoZWNraW5nIE5vcm1hbGl0eQp3aXRoKEFjb3VzdGljRGF0YSwgc2hhcGlyby50ZXN0KHRyYW5zQWNjW21ldGFHcm91cCA9PSAiQSJdKSkKd2l0aChBY291c3RpY0RhdGEsIHNoYXBpcm8udGVzdCh0cmFuc0FjY1ttZXRhR3JvdXAgPT0gIkIiXSkpCgojIyBFcXVhbCBWYXJpYW5jZSBDaGVjawpyZXMuZnRlc3QuT1QgPC0gdmFyLnRlc3QodHJhbnNBY2MgfiBtZXRhR3JvdXAsIGRhdGEgPSBBY291c3RpY0RhdGEpCnJlcy5mdGVzdC5PVAoKIyBNb2RlbCBSZXN1bHRzIChNYW5uLVdoaXRuZXkgVSB0ZXN0IGNvbmR1Y3RlZCBzaW5jZSBhc3N1bXB0aW9uIG9mIG5vcm1hbGl0eSBpcyB2aW9sYXRlZCkKT1RfTVcgPC0gd2lsY294LnRlc3QodHJhbnNBY2MgfiBtZXRhR3JvdXAsIGRhdGEgPSBBY291c3RpY0RhdGEpCk9UX01XCgpgYGAKCiMjIyBJbnRlbGxpZ2liaWxpdHkgKFZBUykKYGBge3J9CgojIEFzc3VtcHRpb24gQ2hlY2sKCiMjIENoZWNraW5nIE5vcm1hbGl0eQp3aXRoKEFjb3VzdGljRGF0YSwgc2hhcGlyby50ZXN0KFZBU1ttZXRhR3JvdXAgPT0gIkEiXSkpCndpdGgoQWNvdXN0aWNEYXRhLCBzaGFwaXJvLnRlc3QoVkFTW21ldGFHcm91cCA9PSAiQiJdKSkKCiMjIEVxdWFsIFZhcmlhbmNlIENoZWNrCnJlcy5mdGVzdC5WQVMgPC0gdmFyLnRlc3QoVkFTIH4gbWV0YUdyb3VwLCBkYXRhID0gQWNvdXN0aWNEYXRhKQpyZXMuZnRlc3QuVkFTCgojIE1vZGVsIFJlc3VsdHMgKE1hbm4tV2hpdG5leSBVIHRlc3QgY29uZHVjdGVkIHNpbmNlIGFzc3VtcHRpb24gb2Ygbm9ybWFsaXR5IGlzIHZpb2xhdGVkKQpPVF9NVyA8LSB3aWxjb3gudGVzdChWQVMgfiBtZXRhR3JvdXAsIGRhdGEgPSBBY291c3RpY0RhdGEpCk9UX01XCgpgYGAKCiMjIE9UIEFuYWx5c2lzCgpTaW5jZSB3ZSBmb3VuZCBzaWduaWZpY2FudCBncm91cCBkaWZmZXJlbmNlcyBmb3Igc29tZSBhY291c3RpYyBtZWFzdXJlcyBiZXR3ZWVuIHRoZSBBTFMvUEQgYW5kIEF0YXhpYy9IRCBncm91cHMsIHdlIGNvbnRpbnVlZCB0aGUgaGVpcmFyaWNoYWwgcmVncmVzc2lvbiBhcHByb2FjaCBmcm9tIE9UIE1vZGVsIDUuIEFkZGluZyBpbiB0aGUgSW5jb29yZCBwcmVkaWN0b3IgYWxvbmcgd2l0aCB0aGUgaW50ZXJhY3Rpb25zIGJldHdlZW4gdGhlIGFjb3VzdGljIG1lYXN1cmVzIGRpZCBub3Qgc2lnbmlmaWNhbnRseSBpbXByb3ZlIG1vZGVsIGZpdC4gU28gb3VyIG9yaWdpbmFsIGZpbmFsIE9UIG1vZGVsIGlzIHJldGFpbmVkLgoKIyMjIE1vZGVsIDYKYGBge3J9CgojIyBTcGVjaWZ5aW5nIE1vZGVsIDYKT1RfTW9kZWw2IDwtIGxtKHRyYW5zQWNjIH4gSHVsbF9iVlNEXzI1ICsgSHVsbF9iVlNEXzc1ICsgSHVsbF9iICsgVlNBX2IgKyB2b3dlbF9FRF9iICsgbWV0YUdyb3VwLCBkYXRhID0gQWNvdXN0aWNEYXRhKQoKIyMgTW9kZWwgNiBBc3N1bXB0aW9uIENoZWNrCnBlcmZvcm1hbmNlOjpjaGVja19tb2RlbChPVF9Nb2RlbDYpCgojIyBNb2RlbCA2IFN1bW1hcnkKc3VtbWFyeShPVF9Nb2RlbDYpCgojIyBNb2RlbCA1IGFuZCBNb2RlbCA2IENvbXBhcmlzb24KYW5vdmEoT1RfTW9kZWw1LCBPVF9Nb2RlbDYpCgpgYGAKIyMjIE1vZGVsIDcKYGBge3J9CgojIyBTcGVjaWZ5aW5nIE1vZGVsIDcKT1RfTW9kZWw3IDwtIGxtKHRyYW5zQWNjIH4gSHVsbF9iVlNEXzI1ICsgSHVsbF9iVlNEXzc1ICsgSHVsbF9iICsgVlNBX2IgKyB2b3dlbF9FRF9iICsgCiAgICAgICAgICAgICAgICAgIG1ldGFHcm91cCArIG1ldGFHcm91cCpIdWxsX2JWU0RfMjUsIGRhdGEgPSBBY291c3RpY0RhdGEpCgojIyBNb2RlbCA3IEFzc3VtcHRpb24gQ2hlY2sKcGVyZm9ybWFuY2U6OmNoZWNrX21vZGVsKE9UX01vZGVsNykKCiMjIE1vZGVsIDcgU3VtbWFyeQpzdW1tYXJ5KE9UX01vZGVsNykKCiMjIE1vZGVsIDYgYW5kIE1vZGVsIDcgQ29tcGFyaXNvbgphbm92YShPVF9Nb2RlbDYsIE9UX01vZGVsNykKCmBgYAoKIyMjIE1vZGVsIDgKYGBge3J9CgojIyBTcGVjaWZ5aW5nIE1vZGVsIDgKT1RfTW9kZWw4IDwtIGxtKHRyYW5zQWNjIH4gSHVsbF9iVlNEXzI1ICsgSHVsbF9iVlNEXzc1ICsgSHVsbF9iICsgVlNBX2IgKyB2b3dlbF9FRF9iICsgCiAgICAgICAgICAgICAgICAgIG1ldGFHcm91cCArIG1ldGFHcm91cCpIdWxsX2JWU0RfMjUgKyBtZXRhR3JvdXAqSHVsbF9iVlNEXzc1LCBkYXRhID0gQWNvdXN0aWNEYXRhKQoKIyMgTW9kZWwgOCBBc3N1bXB0aW9uIENoZWNrCnBlcmZvcm1hbmNlOjpjaGVja19tb2RlbChPVF9Nb2RlbDgpCgojIyBNb2RlbCA4IFN1bW1hcnkKc3VtbWFyeShPVF9Nb2RlbDgpCgojIyBNb2RlbCA3IGFuZCBNb2RlbCA4IENvbXBhcmlzb24KYW5vdmEoT1RfTW9kZWw3LCBPVF9Nb2RlbDgpCgpgYGAKCiMjIyBNb2RlbCA5CmBgYHtyfQoKIyMgU3BlY2lmeWluZyBNb2RlbCA5Ck9UX01vZGVsOSA8LSBsbSh0cmFuc0FjYyB+IEh1bGxfYlZTRF8yNSArIEh1bGxfYlZTRF83NSArIEh1bGxfYiArIFZTQV9iICsgdm93ZWxfRURfYiArIG1ldGFHcm91cCArCiAgICAgICAgICAgICAgICAgIG1ldGFHcm91cCpIdWxsX2JWU0RfMjUgKwogICAgICAgICAgICAgICAgICBtZXRhR3JvdXAqSHVsbF9iVlNEXzc1ICsKICAgICAgICAgICAgICAgICAgbWV0YUdyb3VwKkh1bGxfYiwgZGF0YSA9IEFjb3VzdGljRGF0YSkKCiMjIE1vZGVsIDkgQXNzdW1wdGlvbiBDaGVjawpwZXJmb3JtYW5jZTo6Y2hlY2tfbW9kZWwoT1RfTW9kZWw5KQoKIyMgTW9kZWwgOSBTdW1tYXJ5CnN1bW1hcnkoT1RfTW9kZWw5KQoKIyMgTW9kZWwgOCBhbmQgTW9kZWwgOSBDb21wYXJpc29uCmFub3ZhKE9UX01vZGVsOCwgT1RfTW9kZWw5KQoKYGBgCgojIyMgTW9kZWwgMTAKYGBge3J9CgojIyBTcGVjaWZ5aW5nIE1vZGVsIDEwCk9UX01vZGVsMTAgPC0gbG0odHJhbnNBY2MgfiBIdWxsX2JWU0RfMjUgKyBIdWxsX2JWU0RfNzUgKyBIdWxsX2IgKyBWU0FfYiArIHZvd2VsX0VEX2IgKwogICAgICAgICAgICAgICAgICAgbWV0YUdyb3VwICsKICAgICAgICAgICAgICAgICAgIG1ldGFHcm91cCpIdWxsX2JWU0RfMjUgKwogICAgICAgICAgICAgICAgICAgbWV0YUdyb3VwKkh1bGxfYlZTRF83NSArCiAgICAgICAgICAgICAgICAgICBtZXRhR3JvdXAqSHVsbF9iICsKICAgICAgICAgICAgICAgICAgIG1ldGFHcm91cCpWU0FfYiwKICAgICAgICAgICAgICAgICBkYXRhID0gQWNvdXN0aWNEYXRhKQoKIyMgTW9kZWwgMTAgQXNzdW1wdGlvbiBDaGVjawpwZXJmb3JtYW5jZTo6Y2hlY2tfbW9kZWwoT1RfTW9kZWwxMCkKCiMjIE1vZGVsIDEwIFN1bW1hcnkKc3VtbWFyeShPVF9Nb2RlbDEwKQoKIyMgTW9kZWwgOSBhbmQgTW9kZWwgMTAgQ29tcGFyaXNvbgphbm92YShPVF9Nb2RlbDksIE9UX01vZGVsMTApCgpgYGAKCiMjIyBNb2RlbCAxMQpgYGB7cn0KCiMjIFNwZWNpZnlpbmcgTW9kZWwgMTEKT1RfTW9kZWwxMSA8LSBsbSh0cmFuc0FjYyB+IEh1bGxfYlZTRF8yNSArIEh1bGxfYlZTRF83NSArIEh1bGxfYiArIFZTQV9iICsgdm93ZWxfRURfYiArCiAgICAgICAgICAgICAgICAgICBtZXRhR3JvdXAgKwogICAgICAgICAgICAgICAgICAgbWV0YUdyb3VwKkh1bGxfYlZTRF8yNSArCiAgICAgICAgICAgICAgICAgICBtZXRhR3JvdXAqSHVsbF9iVlNEXzc1ICsKICAgICAgICAgICAgICAgICAgIG1ldGFHcm91cCpIdWxsX2IgKwogICAgICAgICAgICAgICAgICAgbWV0YUdyb3VwKlZTQV9iICsKICAgICAgICAgICAgICAgICAgIG1ldGFHcm91cCp2b3dlbF9FRF9iLAogICAgICAgICAgICAgICAgIGRhdGEgPSBBY291c3RpY0RhdGEpCgojIyBNb2RlbCAxMSBBc3N1bXB0aW9uIENoZWNrCnBlcmZvcm1hbmNlOjpjaGVja19tb2RlbChPVF9Nb2RlbDExKQoKIyMgTW9kZWwgMTEgU3VtbWFyeQpzdW1tYXJ5KE9UX01vZGVsMTEpCgojIyBNb2RlbCAxMCBhbmQgTW9kZWwgMTEgQ29tcGFyaXNvbgphbm92YShPVF9Nb2RlbDEwLCBPVF9Nb2RlbDExKQoKYGBgCgojIyBWQVMgQW5hbHlzaXMKClNpbmNlIHdlIGZvdW5kIHNpZ25pZmljYW50IGdyb3VwIGRpZmZlcmVuY2VzIGZvciBzb21lIGFjb3VzdGljIG1lYXN1cmVzIGJldHdlZW4gdGhlIEFMUy9QRCBhbmQgQXRheGljL0hEIGdyb3Vwcywgd2UgY29udGludWVkIHRoZSBoaWVyYXJjaGljYWwgcmVncmVzc2lvbiBhcHByb2FjaCBmcm9tIFZBUyBNb2RlbCA1LiBWQVMgTW9kZWwgNiBmaXQgc2lnbmlmaWNhbnRseSBiZXR0ZXIgdGhhbiBWQVMgTW9kZWwgNS4gSG93ZXZlciwgYWRkaW5nIGluIHRoZSBpbnRlcmFjdGlvbnMgYmV0d2VlbiBJbmNvb3JkIGFuZCB0aGUgYWNvdXN0aWMgbWVhc3VyZXMgZGlkIG5vdCBzaWduaWZpY2FudGx5IGltcHJvdmUgbW9kZWwgZml0LgoKIyMjIE1vZGVsIDYKYGBge3J9CgojIyBTcGVjaWZ5aW5nIE1vZGVsIDYKVkFTX01vZGVsNiA8LSBsbShWQVMgfiBIdWxsX2JWU0RfMjUgKyBIdWxsX2JWU0RfNzUgKyBIdWxsX2IgKyBWU0FfYiArIHZvd2VsX0VEX2IgKwogICAgICAgICAgICAgICAgICAgbWV0YUdyb3VwLCBkYXRhID0gQWNvdXN0aWNEYXRhKQoKIyMgTW9kZWwgNiBBc3N1bXB0aW9uIENoZWNrCnBlcmZvcm1hbmNlOjpjaGVja19tb2RlbChWQVNfTW9kZWw2KQoKIyMgTW9kZWwgNiBTdW1tYXJ5CnN1bW1hcnkoVkFTX01vZGVsNikKCiMjIE1vZGVsIDUgYW5kIE1vZGVsIDYgQ29tcGFyaXNvbgphbm92YShWQVNfTW9kZWw1LCBWQVNfTW9kZWw2KQoKYGBgCgojIyMgTW9kZWwgNwpgYGB7cn0KCiMjIFNwZWNpZnlpbmcgTW9kZWwgNwpWQVNfTW9kZWw3IDwtIGxtKFZBUyB+IEh1bGxfYlZTRF8yNSArIEh1bGxfYlZTRF83NSArIEh1bGxfYiArIFZTQV9iICsgdm93ZWxfRURfYiArIAogICAgICAgICAgICAgICAgICBtZXRhR3JvdXAgKyBtZXRhR3JvdXAqSHVsbF9iVlNEXzI1LCBkYXRhID0gQWNvdXN0aWNEYXRhKQoKIyMgTW9kZWwgNyBBc3N1bXB0aW9uIENoZWNrCnBlcmZvcm1hbmNlOjpjaGVja19tb2RlbChWQVNfTW9kZWw3KQoKIyMgTW9kZWwgNyBTdW1tYXJ5CnN1bW1hcnkoVkFTX01vZGVsNykKCiMjIE1vZGVsIDYgYW5kIE1vZGVsIDcgQ29tcGFyaXNvbgphbm92YShWQVNfTW9kZWw2LCBWQVNfTW9kZWw3KQoKCmBgYAoKIyMjIE1vZGVsIDgKYGBge3J9CgojIyBTcGVjaWZ5aW5nIE1vZGVsIDgKVkFTX01vZGVsOCA8LSBsbShWQVMgfiBIdWxsX2JWU0RfMjUgKyBIdWxsX2JWU0RfNzUgKyBIdWxsX2IgKyBWU0FfYiArIHZvd2VsX0VEX2IgKyAKICAgICAgICAgICAgICAgICAgbWV0YUdyb3VwICsgbWV0YUdyb3VwKkh1bGxfYlZTRF8yNSArIG1ldGFHcm91cCpIdWxsX2JWU0RfNzUsIGRhdGEgPSBBY291c3RpY0RhdGEpCgojIyBNb2RlbCA4IEFzc3VtcHRpb24gQ2hlY2sKcGVyZm9ybWFuY2U6OmNoZWNrX21vZGVsKFZBU19Nb2RlbDgpCgojIyBNb2RlbCA4IFN1bW1hcnkKc3VtbWFyeShWQVNfTW9kZWw4KQoKIyMgTW9kZWwgNyBhbmQgTW9kZWwgOCBDb21wYXJpc29uCmFub3ZhKFZBU19Nb2RlbDcsIFZBU19Nb2RlbDgpCgoKYGBgCgojIyMgTW9kZWwgOQpgYGB7cn0KCiMjIFNwZWNpZnlpbmcgTW9kZWwgOQpWQVNfTW9kZWw5IDwtIGxtKFZBUyB+IEh1bGxfYlZTRF8yNSArIEh1bGxfYlZTRF83NSArIEh1bGxfYiArIFZTQV9iICsgdm93ZWxfRURfYiArCiAgICAgICAgICAgICAgICAgICBtZXRhR3JvdXAgKwogICAgICAgICAgICAgICAgICAgbWV0YUdyb3VwKkh1bGxfYlZTRF8yNSArCiAgICAgICAgICAgICAgICAgICBtZXRhR3JvdXAqSHVsbF9iVlNEXzc1ICsKICAgICAgICAgICAgICAgICAgIG1ldGFHcm91cCpIdWxsX2IsCiAgICAgICAgICAgICAgICAgZGF0YSA9IEFjb3VzdGljRGF0YSkKCiMjIE1vZGVsIDkgQXNzdW1wdGlvbiBDaGVjawpwZXJmb3JtYW5jZTo6Y2hlY2tfbW9kZWwoVkFTX01vZGVsOSkKCiMjIE1vZGVsIDkgU3VtbWFyeQpzdW1tYXJ5KFZBU19Nb2RlbDkpCgojIyBNb2RlbCA4IGFuZCBNb2RlbCA5IENvbXBhcmlzb24KYW5vdmEoVkFTX01vZGVsOCwgVkFTX01vZGVsOSkKCmBgYAoKIyMjIE1vZGVsIDEwCmBgYHtyfQoKIyMgU3BlY2lmeWluZyBNb2RlbCAxMApWQVNfTW9kZWwxMCA8LSBsbShWQVMgfiBIdWxsX2JWU0RfMjUgKyBIdWxsX2JWU0RfNzUgKyBIdWxsX2IgKyBWU0FfYiArIHZvd2VsX0VEX2IgKwogICAgICAgICAgICAgICAgICAgIG1ldGFHcm91cCArCiAgICAgICAgICAgICAgICAgICAgbWV0YUdyb3VwKkh1bGxfYlZTRF8yNSArCiAgICAgICAgICAgICAgICAgICAgbWV0YUdyb3VwKkh1bGxfYlZTRF83NSArCiAgICAgICAgICAgICAgICAgICAgbWV0YUdyb3VwKkh1bGxfYiArCiAgICAgICAgICAgICAgICAgICAgbWV0YUdyb3VwKlZTQV9iLAogICAgICAgICAgICAgICAgICBkYXRhID0gQWNvdXN0aWNEYXRhKQoKIyMgTW9kZWwgMTAgQXNzdW1wdGlvbiBDaGVjawpwZXJmb3JtYW5jZTo6Y2hlY2tfbW9kZWwoVkFTX01vZGVsMTApCgojIyBNb2RlbCAxMCBTdW1tYXJ5CnN1bW1hcnkoVkFTX01vZGVsMTApCgojIyBNb2RlbCA5IGFuZCBNb2RlbCAxMCBDb21wYXJpc29uCmFub3ZhKFZBU19Nb2RlbDksIFZBU19Nb2RlbDEwKQoKYGBgCiMjIyBNb2RlbCAxMQpgYGB7cn0KCiMjIFNwZWNpZnlpbmcgTW9kZWwgMTEKVkFTX01vZGVsMTEgPC0gbG0oVkFTIH4gSHVsbF9iVlNEXzI1ICsgSHVsbF9iVlNEXzc1ICsgSHVsbF9iICsgVlNBX2IgKyB2b3dlbF9FRF9iICsKICAgICAgICAgICAgICAgICAgICBtZXRhR3JvdXAgKwogICAgICAgICAgICAgICAgICAgIG1ldGFHcm91cCpIdWxsX2JWU0RfMjUgKwogICAgICAgICAgICAgICAgICAgIG1ldGFHcm91cCpIdWxsX2JWU0RfNzUgKwogICAgICAgICAgICAgICAgICAgIG1ldGFHcm91cCpIdWxsX2IgKwogICAgICAgICAgICAgICAgICAgIG1ldGFHcm91cCpWU0FfYiArCiAgICAgICAgICAgICAgICAgICAgbWV0YUdyb3VwKnZvd2VsX0VEX2IsCiAgICAgICAgICAgICAgICAgIGRhdGEgPSBBY291c3RpY0RhdGEpCgojIyBNb2RlbCAxMSBBc3N1bXB0aW9uIENoZWNrCnBlcmZvcm1hbmNlOjpjaGVja19tb2RlbChWQVNfTW9kZWwxMSkKCiMjIE1vZGVsIDExIFN1bW1hcnkKc3VtbWFyeShWQVNfTW9kZWwxMSkKCiMjIE1vZGVsIDEwIGFuZCBNb2RlbCAxMSBDb21wYXJpc29uCmFub3ZhKFZBU19Nb2RlbDEwLCBWQVNfTW9kZWwxMSkKCmBgYAoKIyMjIE5ldyBGaW5hbCBWQVMgTW9kZWwKU2luY2UgVkFTIE1vZGVsIDYgd2FzIHNpZ25pZmljYW50bHkgYmV0dGVyIGZpdCB0aGFuIE1vZGVsIDUsIHdlIGZpdCBhIG5ldyBmaW5hbCBwYXJzaW1vbmlvdXMgbW9kZWwgZm9yIFZBUyB0byB0aGUgZGF0YSAoVkFTIH4gVlNBX2IgKyBtZXRhR3JvdXApIGFuZCBjb21wYXJlZCB0aGF0IHRvIHRoZSBvbGQgZmluYWwgVkFTIG1vZGVsIChWQVMgfiBWU0FfYikuIFRoZSBuZXcgZmluYWwgbW9kZWwgd2FzIG5vdCBhIHNpZ25pZmljYW50bHkgYmV0dGVyIGZpdCB0aGFuIHRoZSBvbGQgZmluYWwgbW9kZWwuIFRodXMgdGhlIG9sZCBmaW5hbCBtb2RlbCAoVkFTIH4gVlNBX2IpIGlzIHJldGFpbmVkLgoKYGBge3J9CgojIyBTcGVjaWZ5aW5nIE5ldyBGaW5hbCBWQVMgTW9kZWwKVkFTX01vZGVsX25ld2ZpbmFsIDwtIGxtKFZBUyB+IFZTQV9iICsgbWV0YUdyb3VwLCBkYXRhID0gQWNvdXN0aWNEYXRhKQoKIyMgTmV3IEZpbmFsIFZBUyBNb2RlbCBBc3N1bXB0aW9uIENoZWNrCnBlcmZvcm1hbmNlOjpjaGVja19tb2RlbChWQVNfTW9kZWxfbmV3ZmluYWwpCgojIyBOZXcgRmluYWwgVkFTIE1vZGVsIFN1bW1hcnkKc3VtbWFyeShWQVNfTW9kZWxfbmV3ZmluYWwpCgojIyBDb21wYXJpc29uIHRvIE9sZCBGaW5hbCBNb2RlbAphbm92YShWQVNfTW9kZWxfZmluYWwsIFZBU19Nb2RlbF9uZXdmaW5hbCkKCmBgYAoKIyMgVGVzdGluZyBJbmRpdmlkdWFsIFByZWRpY3RvcnMKQmVjYXVzZSBzb21lIGNvcnJlbGF0aW9ucyBiZXR3ZWVuIHByZWRpY3RvcnMgYXJlIGhpZ2guIFdlIHJ1biBhIHNlcmllcyBvZiBzaW1wbGUgbGluZWFyIHJlZ3Jlc3Npb25zIHRvIHRlc3QgaWYgdGhlIHByZWRpY3RvcnMgc2lnbmlmaWNhbnRseSBwcmVkaWN0IGVhY2ggaW50ZWxsaWdpYmlsaXR5IG1lYXN1cmUgb24gdGhlaXIgb3duIChWU0QgMjUgYW5kIFZTQSBtb2RlbHMgd2VyZSBhbHJlYWR5IGNvbXBsZXRlIGluIG91ciBpbml0aWFsIG1vZGVsIGNvbXBhcmlzb24gYXBwcm9hY2gpCgojIyMgT3J0aG9ncmFwaGljIFRyYW5zY3JpcHRpb24gTW9kZWxzCmBgYHtyfQoKIyBPVCB+IFZTRCA3NQpPVF92c2Q3NV9tb2RlbCA8LSBsbSh0cmFuc0FjYyB+IEh1bGxfYlZTRF83NSwgZGF0YSA9IEFjb3VzdGljRGF0YSkKcGVyZm9ybWFuY2U6OmNoZWNrX21vZGVsKE9UX3ZzZDc1X21vZGVsKQpzdW1tYXJ5KE9UX3ZzZDc1X21vZGVsKQoKIyBPVCB+IEh1bGwKT1RfaHVsbF9tb2RlbCA8LSBsbSh0cmFuc0FjYyB+IEh1bGxfYiwgZGF0YSA9IEFjb3VzdGljRGF0YSkKcGVyZm9ybWFuY2U6OmNoZWNrX21vZGVsKE9UX2h1bGxfbW9kZWwpCnN1bW1hcnkoT1RfaHVsbF9tb2RlbCkKCiMgT1QgfiBDb3JuZXIgRGlzcGVyc2lvbgpPVF9kaXNwX21vZGVsIDwtIGxtKHRyYW5zQWNjIH4gdm93ZWxfRURfYiwgZGF0YSA9IEFjb3VzdGljRGF0YSkKcGVyZm9ybWFuY2U6OmNoZWNrX21vZGVsKE9UX2Rpc3BfbW9kZWwpCnN1bW1hcnkoT1RfZGlzcF9tb2RlbCkKCmBgYAoKIyMjIFZBUyBNb2RlbHMKYGBge3J9CgojIFZBUyB+IFZTRCA3NQpWQVNfdnNkNzVfbW9kZWwgPC0gbG0oVkFTIH4gSHVsbF9iVlNEXzc1LCBkYXRhID0gQWNvdXN0aWNEYXRhKQpwZXJmb3JtYW5jZTo6Y2hlY2tfbW9kZWwoVkFTX3ZzZDc1X21vZGVsKQpzdW1tYXJ5KFZBU192c2Q3NV9tb2RlbCkKCiMgVkFTIH4gSHVsbApWQVNfaHVsbF9tb2RlbCA8LSBsbShWQVMgfiBIdWxsX2IsIGRhdGEgPSBBY291c3RpY0RhdGEpCnBlcmZvcm1hbmNlOjpjaGVja19tb2RlbChWQVNfaHVsbF9tb2RlbCkKc3VtbWFyeShWQVNfaHVsbF9tb2RlbCkKCiMgVkFTIH4gQ29ybmVyIERpc3BlcnNpb24KVkFTX2Rpc3BfbW9kZWwgPC0gbG0oVkFTIH4gdm93ZWxfRURfYiwgZGF0YSA9IEFjb3VzdGljRGF0YSkKcGVyZm9ybWFuY2U6OmNoZWNrX21vZGVsKFZBU19kaXNwX21vZGVsKQpzdW1tYXJ5KFZBU19kaXNwX21vZGVsKQoKCmBgYAo=